﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cataloger
{
    public partial class FrmAsysWysz1 : Form
    {
		#region Fields (2) 

        AsystenWysz asystent = new AsystenWysz();
        int ktoreKlikniecie = 0;

		#endregion Fields 

		#region Constructors (1) 

        FrmGlowna fGlow;
        public FrmAsysWysz1(FrmGlowna fGlowna)
        {
            InitializeComponent();
            comboBox1.Items.AddRange(Kategoria.KategorieDostepne.ToArray());
            comboBox4.Items.AddRange(TypPliku.TypyPlikow.ToArray());
            fGlow = fGlowna;
        }

		#endregion Constructors 

		#region Methods (40) 

		// Public Methods (1) 

        public bool CzySzukacDalej()
        {

            if (asystent.PlikiWArchiwach.Count == 0 && asystent.PlikiZnalezione.Count == 0)
                return false;
            else
                return true;
        }
		// Private Methods (39) 

        private void brakPlikow()
        {

            MessageBox.Show("Niestetety pliki spełniające twoje dotychczasowe kryteria nie istnieją w katalogu dlatego już Ci nic wiecęj nie pomogę", "Brak plików w bazie", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            this.Close();
        }

        private void button13_Click(object sender, EventArgs e)
        {
            ktoreKlikniecie++;
            RozpoznajKtoryPanel();
            



        }

        private void RozpoznajKtoryPanel()
        {
            switch (ktoreKlikniecie)
            {
                case 0:
                    {
                        panel0();
                        btnWstecz.Visible = false;
                    }
                    break;
                case 1:
                    {
                        panel1();
                        btnWstecz.Visible = true;

                    }
                    break;
                case 2:
                    {
                        panel2();
                    }
                    break;
                case 3:
                    {
                        panel3();
                    }
                    break;
                case 4:
                    {
                        panel4();

                    }
                    break;
                case 5:
                    {
                        panel5();
                    }
                    break;
                case 6:
                    {
                        panel6();
                    }
                    break;
                case 7:
                    {
                        panel7();
                    }
                    break;
                case 8:
                    {
                        panel8();
                    }
                    break;
                case 9:
                    {
                        panel9();
                    }
                    break;
                case 10:
                    {
                        panel10();
                    }
                    break;
                case 11:
                    {
                        panel11();
                    }
                    break;
                case 12:
                    {
                        panel12();

                    }
                    break;
                case 13:
                    {
                        panel13();
                    }
                    break;
                case 14:
                    {
                        panel14();
                    }
                    break;
                case 15:
                    {
                        panel15();
                        MessageBox.Show("Znaleziona liczba plików: " + asystent.PlikiZnalezione.Count + "\n" +
                                        "Znaleziona liczba plików w archiwach: " + asystent.PlikiWArchiwach.Count + "\n",
                                        "Raport wyszukiwania", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        FrmZnalezioneAsystent fZnalPlikiAs = new FrmZnalezioneAsystent(asystent.PlikiZnalezione, asystent.PlikiWArchiwach, fGlow);
                        fZnalPlikiAs.Show();
                        this.Close();
                    }
                    break;

                default:
                    break;
            }
        }

        private void button16_Click(object sender, EventArgs e)
        {
            FrmZnalezioneAsystent fZnalPlikiAs = new FrmZnalezioneAsystent(asystent.PlikiZnalezione, asystent.PlikiWArchiwach,fGlow);
            fZnalPlikiAs.Show();
        }

        private void button17_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkBox10.Checked = false;
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkBox11.Checked = false;
        }

        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkBox12.Checked = false;
        }

        private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkBox20.Checked = false;
        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            checkBox13.Checked = false;
        }

        private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
        {
            checkBox14.Checked = false;
        }

        private void dateTimePicker3_ValueChanged(object sender, EventArgs e)
        {
            checkBox15.Checked = false;
        }

        private void dateTimePicker4_ValueChanged(object sender, EventArgs e)
        {
            checkBox16.Checked = false;
        }

        private void dateTimePicker5_ValueChanged(object sender, EventArgs e)
        {
            checkBox17.Checked = false;
        }

        private void dateTimePicker6_ValueChanged(object sender, EventArgs e)
        {
            checkBox18.Checked = false;
        }

        private void FrmAsysWysz1_Load(object sender, EventArgs e)
        {
            Katalogi.WyswietlWszystkieKatalogi(Katalog.WczytaneKatalogi, treeView1);
            pnl1.Location = new Point(12, 12);
            pnl1.Visible = true;
        }
        private void panel0()
        {
            wylaczPanele();
            pnl1.Location = new Point(12, 12);
            pnl1.Visible = true;
        }
        private void panel1()
        {
            if (radioButton1.Checked)
            {
                asystent.SzukajWszystkieArchiwa();
            }
            else if (radioButton2.Checked)
            {
                asystent.SzukajWszystkiePliki();
            }
            else if (radioButton3.Checked)
            {
                asystent.SzukajWszystkiePliki();
                asystent.SzukajWszystkieArchiwa();
            }

            if (CzySzukacDalej())
            {
                pnl2.Location = new Point(12, 12);
                wylaczPanele();
                //foreach (TreeNode tn in treeView1.Nodes)
                //{
                //    tn.Checked = true;
                //    tn.ZaznaczRekurenycjnie();
                //}
                pnl2.Visible = true;

                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach";
            }
            else
            {
                brakPlikow();
            }

        }

        private void panel10()
        {
            if (!checkBox16.Checked)
            {
                asystent.SzukajDataModOd(dateTimePicker4.Value);


            }
            if (CzySzukacDalej())
            {
                pnl11.Location = new Point(12, 12);
                wylaczPanele();
                pnl11.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach";
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel11()
        {
            if (!checkBox15.Checked)
            {
                asystent.SzukajDataModDo(dateTimePicker3.Value);


            }
            if (CzySzukacDalej())
            {
                pnl12.Location = new Point(12, 12);
                wylaczPanele();
                pnl12.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach";
            }
            else
            {

                brakPlikow();
            }
        }

        private void panel12()
        {
            if (!checkBox18.Checked)
            {
                asystent.SzukajDataDostOd(dateTimePicker6.Value);


            }
            if (CzySzukacDalej())
            {
                pnl13.Location = new Point(12, 12);
                wylaczPanele();
                pnl13.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach";
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel13()
        {
            if (!checkBox17.Checked)
            {
                asystent.SzukajDataDostDo(dateTimePicker5.Value);


            }
            if (CzySzukacDalej())
            {
                pnl14.Location = new Point(12, 12);
                wylaczPanele();
                pnl14.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach";
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel14()
        {
            if (!checkBox10.Checked)
            {
                try
                {
                    Kategoria kat = (Kategoria)comboBox1.SelectedItem;
                    asystent.SzukajKataegoria(kat);
                }
                catch { }


            }
            if (CzySzukacDalej())
            {
                pnl15.Location = new Point(12, 12);
                wylaczPanele();
                pnl15.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

         private void panel15()
         {
             if (!checkBox20.Checked)
             {
                 try
                 {
                     TypPliku typ = (TypPliku)comboBox4.SelectedItem;
                     asystent.SzukajTypPliku(typ);
                 }
                 catch { }


             }
             toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach";
         }
         private void wylaczPanele()
         {
          
             pnl1.Visible = false;
             pnl2.Visible = false;
             pnl3.Visible = false;
             pnl4.Visible = false;
             pnl5.Visible = false;
             pnl6.Visible = false;
             pnl7.Visible = false;
             pnl8.Visible = false;
             pnl9.Visible = false;
             pnl10.Visible = false;
             pnl11.Visible = false;
             pnl12.Visible = false;
             pnl13.Visible = false;
             pnl14.Visible = false;
             pnl15.Visible = false;
         }
        private void panel2()
        {
            if (!checkBox19.Checked)
            {
                asystent.SzukajLokalizacja(PobierzZaznaczoneFoldery());
            }
            if (CzySzukacDalej())
            {
                pnl3.Location = new Point(12, 12);
                wylaczPanele();
                pnl3.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel3()
        {
            if (!chckNW3.Checked)
            {
                asystent.SzukajNazwa(txtNazwa.Text.Trim(), chckRegExpN.Checked, chckCaseSensN.Checked);
            }
            if (CzySzukacDalej())
            {
                pnl4.Location = new Point(12, 12);
                wylaczPanele();
                pnl4.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel4()
        {
            if (!chckRozNW.Checked)
            {
                asystent.SzukajRozsz(txtRozsz.Text, chckRozRegExo.Checked, chckRozCaseSens.Checked);
            }
            if (CzySzukacDalej())
            {
                pnl5.Location = new Point(12, 12);
                wylaczPanele();
                pnl5.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel5()
        {
            if (!chckOpNw.Checked)
            {
                asystent.SzukajOpis(txtOpis.Text, chckRegExpOp.Checked, chckCaseSensOp.Checked);
            }
            if (CzySzukacDalej())
            {
                pnl6.Location = new Point(12, 12);
                wylaczPanele();
                pnl6.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel6()
        {
            if (!checkBox11.Checked)
            {
                long rozmiarOd = 0;
                try
                {
                    rozmiarOd = FrmKategorieDyn.PrzeliczNaBajty((int)numericUpDown1.Value, comboBox2.SelectedItem.ToString());
                    asystent.SzukajRozmiarOd(rozmiarOd);

                }
                catch { }


            }
            if (CzySzukacDalej())
            {
                pnl7.Location = new Point(12, 12);
                wylaczPanele();
                pnl7.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel7()
        {
            if (!checkBox12.Checked)
            {
                long rozmiarDo = 0;
                try
                {
                    rozmiarDo = FrmKategorieDyn.PrzeliczNaBajty((int)numericUpDown2.Value, comboBox3.SelectedItem.ToString());
                    asystent.SzukajRozmiarDo(rozmiarDo);

                }
                catch { }


            }
            if (CzySzukacDalej())
            {
                pnl8.Location = new Point(12, 12);
                wylaczPanele();
                pnl8.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel8()
        {
            if (!checkBox13.Checked)
            {
                asystent.SzukajDataUtwOd(dateTimePicker1.Value);


            }
            if (CzySzukacDalej())
            {
                pnl9.Location = new Point(12, 12);
                wylaczPanele();
                pnl9.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private void panel9()
        {
            if (!checkBox14.Checked)
            {
                asystent.SzukajDataUtwDo(dateTimePicker2.Value);


            }
            if (CzySzukacDalej())
            {
                pnl10.Location = new Point(12, 12);
                wylaczPanele();
                pnl10.Visible = true;
                toolStripStatusLabel2.Text = asystent.PlikiZnalezione.Count.ToString() + " oraz " + asystent.PlikiWArchiwach.Count + " w archiwach"; 
            }
            else
            {
                brakPlikow();
            }
        }

        private List<Folder> PobierzZaznaczoneFoldery()
        {
            List<Folder> listaFold = new List<Folder>();
            foreach (TreeNode tn in treeView1.Nodes)
            {

                if (tn.Checked)
                {
                    try
                    {
                        Folder temp = (Folder)tn.Tag;
                        listaFold.Add(temp);
                    }
                    catch
                    {
                        try
                        {
                            Nosnik temp = (Nosnik)tn.Tag;
                            listaFold.Add(temp.Root);
                        }
                        catch { }
                    }


                }
                szukajDalej(tn, listaFold);
            }
            return listaFold;
        }

        private void szukajDalej(TreeNode trnode, List<Folder> folderyZ)
        {
            foreach (TreeNode tn in trnode.Nodes)
            {
                if (tn.Checked)
                {
                    try
                    {
                        Folder temp = (Folder)tn.Tag;
                        folderyZ.Add(temp);
                    }
                    catch
                    {
                        try
                        {
                            Nosnik temp = (Nosnik)tn.Tag;
                            folderyZ.Add(temp.Root);
                        }
                        catch { }
                    }


                }
                szukajDalej(tn, folderyZ);
            }
        }

        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Checked)
            {
                e.Node.ZaznaczRekurenycjnie();
            }
            else
            {
                e.Node.OdznaczRekurenycjnie();
            }
            checkBox19.Checked = false;
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            
        }

        private void txtNazwa_TextChanged(object sender, EventArgs e)
        {
            chckNW3.Checked = false;
        }

        private void txtOpis_TextChanged(object sender, EventArgs e)
        {
            chckOpNw.Checked = false;
        }

        private void txtRozsz_TextChanged(object sender, EventArgs e)
        {
            chckRozNW.Checked = false;
        }

		#endregion Methods 

        private void button1_Click(object sender, EventArgs e)
        {
            ktoreKlikniecie--;
            RozpoznajKtoryPanel();
            
        }
    }
}
